# -*- coding: utf-8 -*-

"""
1. 编写一个程序，检查任意一个年份是否是闰年
- 如果一个年份可以被4整除不能被100整除，或者可以被400整除，这个年份就是闰年


2. 从键盘输入小名的成绩:
    成绩为100时，奖励一辆BMW
    成绩为80-99时，奖励一台Iphone
    成绩为60-79时，奖励一本故事书
    其他时，奖励一根棍子

3. 计算1+2+3.....+100的总和(while循环)

4. 打印99乘法表
"""

# 1. 编写一个程序，检查任意一个年份是否是闰年
# - 如果一个年份可以被4整除不能被100整除，或者可以被400整除，这个年份就是闰年 (伪代码)

# year = int(input('请输入任意一个年份:'))
# if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
#     print(year, '是闰年')
# else:
#     print(year, '是平年')

"""
2. 从键盘输入小名的成绩:
    成绩为100时，奖励一辆BMW
    成绩为80-99时，奖励一台Iphone
    成绩为60-79时，奖励一本故事书
    其他时，奖励一根棍子
"""

# score = int(input('请输入你的成绩:'))
# if score == 100:
#     print('奖励一辆BMW')
# elif 80 <= score <= 99:
#     print('奖励一台Iphone')
# elif 60 <= score <= 79:
#     print('奖励一本故事书')
# else:
#     print('奖励一根棍子')


# 3. 计算1+2+3.....+100的总和(while循环)

# num = 1 # 定义一个变量
# sum = 0 # 初始化一个求总和的变量
# while num < 101:
#     sum += num  # sum = sum + num = 0 + 1
#     num += 1
#
#     print('sum=', sum)


# 4. 打印99乘法表 i = 1 j = 1
# for i in range(1,10):  # i = 1  i 是行数  j = 1 1*1 = 1  i = 2  j = 1,2  2*1=2  2*2 = 4
#     for j in range(1, i+1):
#         print(i, '*', j, '=', i*j, end='\t')
#     print()


# for i in range(2):  # 外层循环一次  内部循环5次
#     print('===')
#     for j in range(5):
#         print('=======')

# while 循环
# i = 1 # 初始化变量
# j = 1
# while i < 10:
#     while j < (i+1):
#         print('%d*%d=%d'%(j,i,j*i), end='\t')
#         j = j + 1
#     print()
#     i = i + 1
#     j = 1


"""
python中数据类型 除了数值类型  还有什么类型  序列类型  散列类型
数值类型: int float bool(True/False: 1/0)
序列类型: str list tuple
散列类型: dict set()

str: 字符串是一个有序的字符集合，用于存储和表示基本的文本信息  不可变类型
操作数据最本质的行为是什么 == 》 增删改查

find: 字符串.方法名()
str.find(str, beg=0, end)
str == > 指定检索的字符串
beg == 》 开始的索引，默认值为0
end == 》 结束的索引，默认为字符串的长度

范围性查找子串，返回索引值，没有则返回-1

常用于检测字符串中是否包含子字符串str

index()
"""
# dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
# for i in dict1:
#     print(i)

# str.fin(str, beg=0, end)

# s = 'hello world'
# print(s.find('h'))  # h的索引值就是0
# print(s.find('worldd'))  # 找不到返回-1
# print(s.find('world'))  # 找到world则返回首个字符的索引


# s = 'python,java,php,helloworld'
# print(s.find('h')) # 返回的是首个h的下标
# print(s.find('h', 4))  # 从下标为4的地方开始找h
# print(s.rfind('h')) # 从后往前找

# s = 'python,java,php,helloworld'
# print(s.index('worldd'))  # 报错

"""
count(): 返回找到的子串个数，找不到就返回0

strip(): 去除字符串两边的空格，换行符，制表符得到的是一个新的字符串

startswith(): 判断字符串是否以xx开头，得到一个布尔值
endswith(): 判断字符串是否以xx结尾， 得到一个布尔值
"""

# s = 'python,java,php,helloworld'
# print(s.count('p'))

# code = input('请输入4位数的验证码:')
# data = code.strip()
# if data == 'ABCD':
#     print('验证码正确')
# else:
#     print('验证码错误')

# add = input('请输入住址:')
# if add.endswith('村'):
#     print('农业户口')
# else:
#     print('非农户口')

# s = '北京市朝阳区'
# print(s.startswith('北京市'))

"""
isdigit: 判断字符串是否是数字组成，返回的结果为True和False

lower() ==> 转小写
upper() ==> 转大写   str.upper()

split():切分字符串，将字符串类型转成列表，默认以空格切分，也可以指定字符切分

replace(): 字符串内容的替换，得到一个新的字符串

join(): 用于将序列中的元素以指定的字符串进行连接生成一个新的字符串
常用于将列表转为字符串
"""
# v1 = input('请输入第一个值:')
# v2 = input('请输入第二个值:')
# if v1.isdigit() and v2.isdigit():
#     data = int(v1) + int(v2)
#     print(data)
# else:
#     print('请输入正确的数字')

# s = 'my name is zuoshou'
# print(s.split())
# s1 = 'python,helloworld,java,php'
# print(s1.split(','))


# 替换敏感词
# content = input('请输入评论信息:')
# content1 = content.replace('爹', '*')
# print(content1)


# arr = ['左手', '和', '子轩', '是', '好朋友']
# print(''.join(arr))
# data = '-'.join(arr)
# print(data.split('-'))

"""
列表: 可以存放多个不同类型的元素，记录多个同种属性值  存储同一个类别的数据，方便操作
可变类型的数据

字符串，不可变类型: 创建好之后内部无法修改[内置功能都是新创建一份数据]

列表，可变类型: 创建好之后内部元素可以修改[独有功能基本上都是直接操作列表内部，不会创建一份新的数据]
"""
# name = 'zuoshou'
# data = name.upper()
# print(id(name), name)
# print(id(data), data)

"""
1.增加(添加) 
append(): 添加一个数据，添加到列表的最后一位
语法: 列表名.append('左手')

insert(): 添加一个数据到指定的位置
语法: 列表名.insert(下标位置，内容)

extend(): 添加一个序列类型到最后一位，并且把序列类型拆分
语法: 列表名.extend(序列类型)
"""
li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
li.append('左手')
# print(li)

li.insert(0, '雷布斯')
# print(li)

li.extend('无条件')
li.extend(['无条件'])  # 如果用中括号括起来就不会被拆分
# print(li)

"""
2. 删除
pop: 删除一个值，默认从最后一个开始删，也可以指定位置
语法: 列表名.pop()
    列表名.pop(下标)
    
remove(): 删除一个指定的值，如果有多个，从第一个开始删
语法: 列表名.remove(删除对象)

clear(): 清空列表里面的所有数据
语法: 列表名.clear()

del: 全局删除，可以删除一个变量
语法: del 列表名[下标]
"""
li.pop(-1)
# print(li)

li.remove(3)
# print(li)

# li.clear()
# print(li)

# del li[3]
# print(li)


"""
3. 改
单个修改: 直接通过下标进行修改
语法: 列表名[下标] = 内容

多个修改: 通过切片的方式进行修改
语法:  列表名[起点:终点] = 数据1， 数据2， 数据3.。。。。
"""

li[1] = '浅安'
# print(li)

li[1:3] = 70, 20
# print(li)

"""
4. 查
index(): 根据内容获取指定数据的下标
语法: 列表名.index(要找的内容)
语法: 列表名.index(要找的内容, 起点值)

count(): 统计数据出现的次数
语法: 列表名.count(要找的内容)
"""
# print(li.index(8))  # 获取的是下标值
# print(li.index(4,5))  # 报错，显示4不在列表中

# print(li.count(10))

"""
排序(全int的列表才可以排序)
sort: 让列表的内容按照降序/升序的方式来排序
    列表名.sort() ==》 升序
    
    列表名.sort(reverse=True) ==> 降序
"""

li1 = [1, 85, 15, 53, 35135, 153, 1354, 35435, 351, 31]
li1.sort()
# print(li1)


li1.sort(reverse=True)
# print(li1)

"""
1. 将列表['h','e','l','l','o',',','w','o','u','i','a','o','u','e','i','a']转为字符串
"""
s = ['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'u', 'i', 'a', 'o', 'u', 'e', 'i', 'a']
a = ''.join(s)
# print(a)

# 2. 求列表中长度大于3的字符串['abc', '左手', '项目负责人', '湖南人']
# s = ['abc', '左手', '项目负责人', '湖南人']
# for i in s:
#     if len(i) > 3:
#         print(i)

"""
输入一个字符串统计每个字母(aeiou)在字符串中出现的次数
对于结果输出5行，格式如下
a:num1 (a的个数)
e:num1 (e的个数)
i:num1 (i的个数)
o:num1 (o的个数)
u:num1 (u的个数)
"""
# s = input('请输入一个字符串:')
# print('a:', s.count('a'))
# print('e:', s.count('e'))
# print('i:', s.count('i'))
# print('o:', s.count('o'))
# print('u:', s.count('u'))

# for i in 'aeiou':
#     print(f'{i}:{s.count(i)}次')

"""
列表生成式 
生成一个1到9的数值列表
"""
# li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# print(li)
#
# print(list(range(1,10)))

"""
普通写法
"""
# li = []  # 用来存储数据的列表
# for i in range(1,10):
#     li.append(i)
# print(li)

# 列表生成式
# print([i for i in range(1,10)])

"""
[1*1,2*2,3*3,....9*9]
# 普通写法
"""
# li = [] # 初识一个列表来存储数据
# for i in range(1,10):
#     li.append(i*i)
# print(li)

# 列表生成式
# print([i*i for i in range(1,10)])

"""
[1*2,2*3,3*4,....9*10]
普通写法
"""
# li = []
# for i in range(1,10):
#     li.append(i*(i+1))
# print(li)

# # 列表生成式
# print([i*(i+1) for i in range(1,10)])

"""
求偶数，普通写法
"""
# li = []
# for i in range(1,11):
#     if i % 2 == 0:
#         li.append(i)
#
# print(li)

# 带if的列表生成式写法
# print([i for i in range(1,11) if i % 2 == 0])


"""
普通写法
"""
li = []
for i in 'ABC':
    for j in '123':
        li.append(i+j)
print(li)


# 双层循环写法
print([i+j for i in 'ABC' for j in '123'])







